package org.example.baozi;

public class Product implements Runnable{
    //生产者对应的包子铺
    private BaoZiPu bzp;

    public Product(BaoZiPu bzp) {
        this.bzp = bzp;
    }

    @Override
    public void run() {
        while(true){
            synchronized (bzp) {
                //没有包子就创建一个包子
                if (!bzp.isFlag()) {
                    //生产包子的过程需要1秒钟
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    int id = bzp.getBaoZiId() + 1;
                    System.out.println("生产者生产了包子：" + id);
                    //生产完包子了就给包子设置编号
                    bzp.setBaoZiId(id);
                    //需要给包子铺的标记设置为真
                    bzp.setFlag(true);
                    //叫醒消费者
                    bzp.notify();
                } else {
                    //线程阻塞
                    try {
                        bzp.wait();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    }
}
